package org.ala.tiktools.sharddb.mybatis.summary;

import java.util.Map;

import org.ala.tiktools.mybatis.interfaces.IOrderBy;
import org.ala.tiktools.sharddb.mybatis.router.ShardInfo;

/**
 *	自定义聚合器
 *
 *	@author ala
 *	@date 2025年5月6日
 */
public interface ICustomSummary<E, R> extends ISummary<E> {
	@SuppressWarnings("rawtypes")
	public final static ICustomSummary NULL = new ICustomSummary(){
		public Object summary(IOrderBy orderBy, Map result) { return null; }
		public Object summary(Map result) { return null; }
	};
	/**
	 * 	执行含orderBy的聚合
	 */
	R summary(IOrderBy<E> orderBy, Map<ShardInfo, E> result);
	/**
	 * 	执行普通聚合
	 */
	R summary(Map<ShardInfo, E> result);
}
